<?php

require_once 'Basic.php';

class FormFieldCPF extends FormFieldType {
  
  public function __construct() {
    $this->htmlClass = "cpfField";
    $this->inputSize = 15;
    $this->htmlId = null;
  }
  
  public function clearHtmlClass() {
    $this->htmlClass = "cpfField";
  }

  public function getHtml($name, $value) {
    return $this->commonHtml($name, $value);
  }

  public function validate($input) {
    return FormFieldCPF::validateCpf($input);
  }

  public static function validateCpf($cpf) {
    if(preg_match("%^[0-9]{11}$%", $cpf) === 1) {
	
      // calcula o primeiro dígito verificador 
      $sum = 0;
      for ($i = 0; $i < 9; $i++) {
        $sum += $cpf[$i] * (10-$i);
      }
      $mod = $sum % 11;
      $digit = ($mod > 1) ? (11 - $mod) : 0;

      // verifica se o primeiro dígito verificador está correto
      if ($cpf[9] != $digit) {
        return "CPF inv&aacute;lido.";
      }
      else {

        // calcula o segundo dígito verificador
        $sum = 0;
        for ($i = 0; $i < 10; $i++) {
          $sum += $cpf[$i] * (11-$i);
        }
        $mod = $sum % 11;
        $digit = ($mod > 1) ? (11 - $mod) : 0; 

        // verifica se o segundo dígito verificador está correto
        if ($cpf[10] != $digit) {
          return "CPF inv&aacute;lido.";
        }
        else {
          return true;	// está tudo certo
        }
      }
    }
    else {
      return "O CPF deve possuir 11 d&iacute;gitos. Foi passado \"<span class='userInput'>${cpf}</span>\".";
    }
  }
  
}
